
package br.com.agi.myhome;

import br.com.agi.myhome.dominio.Estoque;
import br.com.agi.myhome.servicos.CadastradorEstoque;
import br.com.agi.myhome.servicos.RegistroDuplicadoException;
import br.com.agi.myhome.util.BeanUtil;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author Renato
 */
@Named
@ConversationScoped
public class CadastroEstoque implements Serializable {
    
    private static final String cadastro_estoque="cadastro_estoque";
    
    @Inject
    private ControladorEstoque controladorEstoque;
    
    @EJB
    private CadastradorEstoque cadastrador;
    
    @Inject
    private Conversation conversation;
    
    @Inject
    private BeanUtil beanUtil;

    
    public CadastroEstoque(){
        this.estoque=new Estoque();
    }
    private Estoque estoque;

    public Estoque getEstoque() {
        return estoque;
    }

    public void setEstoque(Estoque estoque) {
        this.estoque = estoque;
    }
    
    public String apresentarCadastro(){
        this.estoque=new Estoque();
        this.controladorEstoque.apresentarCadastro();
        return "";
    }
    
    public String apresentarEdicao(){
        this.controladorEstoque.apresentarEdicao();
        return "";
    }
    
    public String apresentarListagem(){
        this.listar();
        this.controladorEstoque.apresentarEstoque();
        return "";
    }
    
    private void listar(){
        List<Estoque> listaEstoque;
        this.iniciarConversacao();
        estoques=new ArrayList<EstoqueAction>();
        listaEstoque=this.cadastrador.getListaEntidade();
        for(Estoque item : listaEstoque){
            EstoqueAction estoqueAction;
            estoqueAction=new EstoqueAction();
            estoqueAction.setEstoque(item);
            estoqueAction.setCadastroEstoque(this);
            estoques.add(estoqueAction);
        }
        
    }
    
    private void iniciarConversacao(){
        if(!conversation.isTransient()){
            conversation.end();
        }
        conversation.begin();
    }
    
    private List<EstoqueAction> estoques;
    public List<EstoqueAction> getEstoques(){
        return estoques;        
    }
    
    public void cadastrar(){
        try {
            cadastrador.cadastrar(estoque);
            this.apresentarListagem();
            beanUtil.registrarSucesso(cadastro_estoque);
        } catch (RegistroDuplicadoException ex) {
            beanUtil.registrarDuplicado();
        } 
        estoque=new Estoque();
    }
    
    public void salvar(){
        cadastrador.salvar(estoque);
        controladorEstoque.apresentarEstoque();
        this.beanUtil.registrarSucesso("cadastro_estoque");
    }
}
